package jmine.tec.web.wicket.component.command.button;

import java.util.List;

import jmine.tec.report.impl.ReportBuilder;
import jmine.tec.web.wicket.component.command.CommandHandler;
import bancosys.tec.persist.dao.BaseDAOFactory;

/**
 * Define como deve ser o feito o tratamento do comando de busca de entidades.
 * 
 * @author Rafael Volpato
 * @date Aug 2, 2011
 * @param <T> Tipo da entidade procurada
 */
public interface SearchCommandHandler<T> extends CommandHandler {

    /**
     * Responsável pelo tratamento de busca de entidades.
     * 
     * @param daoFactory {@link BaseDAOFactory}
     * @return lista de entidades encontradas.
     */
    List<T> search(BaseDAOFactory daoFactory);

    /**
     * Responsável por implementar as informações que resultaram a pesquisa no header do {@link ReportBuilder}.
     * 
     * @param reportBuilder {@link ReportBuilder}
     */
    void addReportHeader(ReportBuilder reportBuilder);
}
